//package com.slofzx.nuoda.evaluation.project.enums;
//
//import com.fasterxml.jackson.annotation.JsonFormat;
//import com.slofzx.nuoda.common.EnumConfig;
//import com.slofzx.nuoda.common.config.Type;
//import com.slofzx.nuoda.common.enums.DataFormatEnum;
//import com.slofzx.nuoda.common.util.DataConvertUtil;
//import com.slofzx.nuoda.common.vo.BaseVO;
//import com.slofzx.nuoda.custom.field.enums.UnitTypeEnum;
//import com.slofzx.nuoda.evaluation.project.vo.ProjectInfoVO;
//import com.slofzx.nuoda.evaluation.project.vo.ProjectYearDataVO;
//import org.apache.commons.collections4.CollectionUtils;
//
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.function.Function;
//
///**
// * 项目年份不相关参数
// *
// * @author sunfuyong
// */
//@JsonFormat(shape = JsonFormat.Shape.OBJECT)
//@EnumConfig(id = "project-param", name = "项目参数", valueFormat = DataFormatEnum.JSON)
//public enum ProjectParamEnum implements ModelInputItem {
//
//    EVALUATION_PERIOD("evaluation_period", "评价期",ProjectInfoVO::getEvaluationPeriod, UnitTypeEnum.YEAR),
//    BUILD_YEAR_COUNT("build_year_count", "建设期年限",ProjectInfoVO::getBuildYearCount, UnitTypeEnum.YEAR),
//    NEW_ANNUAL_CAPACITY("new_annual_capacity", "新建年产能",ProjectInfoVO::getNewAnnualCapacity, UnitTypeEnum.TEN_THOUSAND_TON),
//    NEW_WELL_COUNT("new_well_count", "钻井总数",ProjectInfoVO::getNewWellCount),
//    NET_ASSETS_UN_USE("net_assets_un_use", "待利用净资产",ProjectInfoVO::getNetAssetsUnUse),
//    IS_EVA_METHOD_GROUND("is_eva_method_ground","评价方式为地面评价",null) {
//        @Override
//        public Object getRealValue(ProjectInfoVO dataVO) {
//            if (dataVO == null) {
//                return null;
//            }
//            EvaluationMethodEnum methodEnum = EvaluationMethodEnum.getEnum(dataVO.getEvaluationMethod());
//            if(methodEnum == EvaluationMethodEnum.GROUND) {
//                return true;
//            }
//            return false;
//        }
//    },
//    INF_WELL_COUNT("inf_well_count", "基建井井数",ProjectInfoVO::getInfWellCount, UnitTypeEnum.WELL),
//    INF_OIL_WELL_COUNT("inf_oil_well_count", "基建油井井数",ProjectInfoVO::getInfOilWellCount, UnitTypeEnum.WELL),
//    INF_WATER_WELL_COUNT("inf_water_well_count", "基建水井井数",ProjectInfoVO::getInfWellCount, UnitTypeEnum.WELL),
//    INF_HORIZONTAL_WELL_COUNT("inf_horizontal_well_count", "基建水平井井数",ProjectInfoVO::getBuildHorizontalWellCount, UnitTypeEnum.WELL),
//    VERTICAL_WELL_DAY_OUTPUT("vertical_well_day_output", "直井单井日产",ProjectInfoVO::getStraightWellOutput, UnitTypeEnum.WELL),
//    HORIZONTAL_WELL_DAY_OUTPUT("horizontal_well_day_output", "水平井单井日产",ProjectInfoVO::getHorizontalWellOutput, UnitTypeEnum.WELL),
//    EVALUATION_STAGE("evaluation_stage", "评价阶段",ProjectInfoVO::getEvaluationMethod) {
//        @Override
//        public Object getRealValue(ProjectInfoVO dataVO) {
//            EvaluationMethodEnum methodEnum = EvaluationMethodEnum.getEnum(dataVO.getEvaluationMethod());
//            int value = 0;
//            if(methodEnum == null) {
//                return value;
//            }
//            switch (methodEnum) {
//                case GROUND:
//                    //地面传2
//                    value = 3;
//                    break;
//                case DEDUCT_APPORTIONMENT:
//                    //扣分摊传1
//                    value = 2;
//                    break;
//                case CONVENTIONAL:
//                case OPTIMIZE_INVEST:
//                    //常规和优化投资传0
//                    value = 1;
//                    break;
//                default:
//            }
//            return value;
//        }
//    },
//
//            ;
//
//    /**
//     * 数据类型id
//     */
//    private String id;
//    /**
//     * 数据类型展示名称
//     */
//    private String name;
//
//    /**
//     * 单位
//     */
//    private Type unit;
//    /**
//     * 关联的非年份相关列信息
//     */
//    private Function<ProjectInfoVO,Object> column;
//
//    ProjectParamEnum(String id, String name,Function<ProjectInfoVO,Object> column) {
//        this.id = id;
//        this.name = name;
//        this.column = column;
//    }
//
//
//    ProjectParamEnum(String id, String name,Function<ProjectInfoVO,Object> column, Type unit) {
//        this.id = id;
//        this.name = name;
//        this.unit = unit;
//        this.column = column;
//    }
//
//
//    @Override
//    public String getId() {
//        return id;
//    }
//
//    /**
//     * 兼容可研存储编码
//     *
//     * @return
//     */
//    public String getCode() {
//        return id;
//    }
//
//    @Override
//    public String getName() {
//        return name;
//    }
//
//    public boolean isYearRelated() {
//        return false;
//    }
//
//    public String getDataType() {
//        return "number";
//    }
//
//    /**
//     * 获取实际值，如果是对减法则为有项目的实际值
//     * @param dataVO
//     * @return
//     */
//    public Object getRealValue(ProjectInfoVO dataVO) {
//        if (dataVO == null||this.column == null) {
//            return null;
//        }
//        return this.column.apply(dataVO);
//    }
//
//    /**
//     * 获取对减法无项目实际值
//     * @param dataVO
//     * @return
//     */
//    public Object getNoProjectRealValue(ProjectInfoVO dataVO) {
//        //默认返回有项目对应值，如果有区别则重写
//        return getRealValue(dataVO);
//    }
//
//    /**
//     * 根据id获取对应的枚举
//     *
//     * @param id 枚举值的标识
//     * @return
//     */
//    public static ProjectParamEnum getEnum(String id) {
//        for (ProjectParamEnum dataTypeEnum : ProjectParamEnum.values()) {
//            if (dataTypeEnum.getId().equals(id)) {
//                return dataTypeEnum;
//            }
//        }
//        return null;
//    }
//
//    public String getUnit() {
//        if (unit == null) {
//            return null;
//        }
//        return unit.getId();
//    }
//}
